
// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

#include "SQLErrorLoggingClause.h"
#include "../../visitor/SQLASTVisitor.h"
#include "../SQLName.h"

// @Override
void SQLErrorLoggingClause::accept0(SQLASTVisitor_ptr visitor)
{
  if (visitor->visit(SharedObject(SQLErrorLoggingClause)))
  {
    acceptChild(visitor, into);
    acceptChild(visitor, simpleExpression);
    acceptChild(visitor, limit);
  }
  visitor->endVisit(SharedObject(SQLErrorLoggingClause));
}

SQLName_ptr SQLErrorLoggingClause::getInto()
{
  return into;
}

void SQLErrorLoggingClause::setInto(SQLName_ptr into)
{
  this->into = into;
}

SQLExpr_ptr SQLErrorLoggingClause::getSimpleExpression()
{
  return simpleExpression;
}

void SQLErrorLoggingClause::setSimpleExpression(SQLExpr_ptr simpleExpression)
{
  this->simpleExpression = simpleExpression;
}

SQLExpr_ptr SQLErrorLoggingClause::getLimit()
{
  return limit;
}

void SQLErrorLoggingClause::setLimit(SQLExpr_ptr limit)
{
  this->limit = limit;
}

SQLObject_ptr SQLErrorLoggingClause::clone()
{
  SQLObject_ptr clone_tmp = std::shared_ptr<SQLErrorLoggingClause>(new SQLErrorLoggingClause());
  std::shared_ptr<SQLErrorLoggingClause> x = std::dynamic_pointer_cast<SQLErrorLoggingClause>(clone_tmp);
  // SQLErrorLoggingClause x = new SQLErrorLoggingClause();
  if (into != nullptr)
  {
    x->setInto(std::dynamic_pointer_cast<SQLName>(into->clone()));
  }
  if (simpleExpression != nullptr)
  {
    x->setSimpleExpression(std::dynamic_pointer_cast<SQLExpr>(simpleExpression->clone()));
  }
  if (limit != nullptr)
  {
    x->setLimit(std::dynamic_pointer_cast<SQLExpr>(limit->clone()));
  }
  return x;
}
